#! /usr/bin/python3
"""UDP 广播发送工具

向局域网内发送 UDP 广播消息，用于设备发现和网络测试。

用法:
    python whereAmI.py

功能:
    - 创建 UDP 广播套接字
    - 发送固定消息到广播地址
    - 使用默认端口 1060

示例:
    > python whereAmI.py
    # 将向局域网内所有设备发送 'hello is me!' 消息

配置:
    - 广播端口: 1060
    - 广播消息: 'hello is me!'
    - 广播地址: <broadcast>

注意:
    - 需要配合接收端 whoAreaYou.py 使用
    - 确保网络允许 UDP 广播
    - 防火墙可能需要放行端口
"""

import socket
import sys

def send_broadcast_message(message, port=1060):
    try:
        # 创建 UDP 套接字
        with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
            # 设置广播选项
            s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
            # 发送广播消息
            network = '<broadcast>'
            s.sendto(message.encode('utf-8'), (network, port))
            print(f"已发送广播消息: {message}")
            return True
    except socket.error as e:
        print(f"发送广播消息时出错: {e}")
        return False
    except Exception as e:
        print(f"发生未知错误: {e}")
        return False

if __name__ == "__main__":
    # 默认配置
    DEFAULT_MESSAGE = 'hello is me!'
    DEFAULT_PORT = 1060

    # 发送广播消息
    success = send_broadcast_message(DEFAULT_MESSAGE, DEFAULT_PORT)
    sys.exit(0 if success else 1)
